<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>QSculpt: Mesh Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">QSculpt
   &#160;<span id="projectnumber">0.0.1a</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#friends">Friends</a>  </div>
  <div class="headertitle">
<div class="title">Mesh Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="Mesh" --><!-- doxytag: inherits="ISurface" -->
<p><code>#include &lt;<a class="el" href="_subdivision_8h_source.html">Subdivision.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for Mesh:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_mesh.png" usemap="#Mesh_map" alt=""/>
  <map id="Mesh_map" name="Mesh_map">
<area href="class_i_surface.html" alt="ISurface" shape="rect" coords="0,0,60,24"/>
</map>
 </div></div>

<p><a href="class_mesh-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a1611c39a7e793ba222e92eba9da6219e">iid</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ac6c7c275a9058e234321f5e9d961cbd4">hasChanged</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#affb964be4b82dd642346231cad8f4696">setChanged</a> (bool val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acb2691066064815cac058fca69627d78"></a><!-- doxytag: member="Mesh::setScene" ref="acb2691066064815cac058fca69627d78" args="(Scene *scene)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setScene</b> (<a class="el" href="class_scene.html">Scene</a> *scene)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6640e90adb717dc78665cd3332f4affc"></a><!-- doxytag: member="Mesh::scene" ref="a6640e90adb717dc78665cd3332f4affc" args="() const " -->
virtual <a class="el" href="class_scene.html">Scene</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>scene</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ab56baecdf85f039cb0ad89f4925d26fe">boundingBox</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a7be45b0d141ec1c83c6a554a454c68f0">setColor</a> (const <a class="el" href="class_color.html">Color</a> &amp;color)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#abad5264542d1984300759a171def98bb">color</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a5be77a24074569778cd8cbe47138c013">setSelected</a> (bool val)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a0e8b637313fdad092b8e4b4f1823f777">isSelected</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a6021ffd8934d9145ca1edd7df2414f52">addVertex</a> (const Point3 &amp;point)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a9f2bc7413f4e29d5868686a98842ea1c">addVertex</a> (<a class="el" href="class_vertex.html">Vertex</a> *v)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a8be34a7681ec6570e52611d7298a99e4">removeVertex</a> (size_t id)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a163d154511483e51213b617a1f1dd0bd">vertex</a> (size_t index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a2c98b49e6c06ea3f4f12edce4b72b791">vertex</a> (size_t index) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ad034013a938de18c6babdf16635247d7">numVertices</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3eba1717a19cede3c8e8cc63215c1a1d"></a><!-- doxytag: member="Mesh::addEdge" ref="a3eba1717a19cede3c8e8cc63215c1a1d" args="(const Edge &amp;edge)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (const <a class="el" href="class_edge.html">Edge</a> &amp;edge)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4e29ab633ba1f6a97e1b7c2febe72596"></a><!-- doxytag: member="Mesh::addEdge" ref="a4e29ab633ba1f6a97e1b7c2febe72596" args="(size_t v1, size_t v2)" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (size_t v1, size_t v2)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a191e57fc85691d1ce78af4ea21e2f740">addFace</a> (const QVector&lt; size_t &gt; &amp;vertexIndexList)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ab8cfba4c9da4c35920c5f63090885477">replaceFace</a> (size_t index, const QVector&lt; size_t &gt; &amp;vertexIndexList)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a5f4de604734ffe7d72bbab673290eed7">removeFace</a> (size_t id)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#aa71ce7b007fd9b1eb2b1bea9d24a3aa7">numFaces</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_face.html">Face</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a63fb3c4a4b4ec01294a7568f65a9a156">face</a> (size_t index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac92a3388509018e42c0c983e62f55e90"></a><!-- doxytag: member="Mesh::getFaceIndexAtPoint" ref="ac92a3388509018e42c0c983e62f55e90" args="(const Point3 &amp;p) const " -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getFaceIndexAtPoint</b> (const Point3 &amp;p) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4626153fa66d6f672fa188a1f669314"></a><!-- doxytag: member="Mesh::getClosestPointAtPoint" ref="ac4626153fa66d6f672fa188a1f669314" args="(const Point3 &amp;p) const " -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getClosestPointAtPoint</b> (const Point3 &amp;p) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08c56afe1ff773bea26a54101298c3be"></a><!-- doxytag: member="Mesh::getPointsInRadius" ref="a08c56afe1ff773bea26a54101298c3be" args="(const Point3 &amp;p, float radius) const " -->
virtual QVector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getPointsInRadius</b> (const Point3 &amp;p, float radius) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56bbddf46553d30f0ec49d880858e158"></a><!-- doxytag: member="Mesh::adjustPointNormal" ref="a56bbddf46553d30f0ec49d880858e158" args="(size_t index)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>adjustPointNormal</b> (size_t index)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60efd45e56bdad9fc78b617292f3047b"></a><!-- doxytag: member="Mesh::lock" ref="a60efd45e56bdad9fc78b617292f3047b" args="() const " -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>lock</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade4fc0b1bac4e311219baf27b8ed6bca"></a><!-- doxytag: member="Mesh::unlock" ref="ade4fc0b1bac4e311219baf27b8ed6bca" args="() const " -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>unlock</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41db9b6b456e520125eb22468601363b"></a><!-- doxytag: member="Mesh::selectedPoints" ref="a41db9b6b456e520125eb22468601363b" args="() const " -->
virtual QVector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>selectedPoints</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a575f80470fe3658d2b9555cb1b18a1e6"></a><!-- doxytag: member="Mesh::setSelectedPoints" ref="a575f80470fe3658d2b9555cb1b18a1e6" args="(const QVector&lt; size_t &gt; &amp;indicesArray)" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setSelectedPoints</b> (const QVector&lt; size_t &gt; &amp;indicesArray)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a1a3da9a1014758926c9af5f557d97e5d">vertexIterator</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a05965fc14f4cbc22fda8f8a66413d59c"></a><!-- doxytag: member="Mesh::constVertexIterator" ref="a05965fc14f4cbc22fda8f8a66413d59c" args="() const " -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constVertexIterator</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ae256fa531699b096ebaaf220586b5bd7">faceIterator</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#ac2fcd123ddabd6134c86d95195b2581f">constFaceIterator</a> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad06b868d5e4176063045ff35e7648a2e"></a><!-- doxytag: member="Mesh::edgeIterator" ref="ad06b868d5e4176063045ff35e7648a2e" args="()" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>edgeIterator</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79bef8cc5fa3d6c58351d8f7d2cc896b"></a><!-- doxytag: member="Mesh::constEdgeIterator" ref="a79bef8cc5fa3d6c58351d8f7d2cc896b" args="() const " -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constEdgeIterator</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a9ede5a0370854b4f05841f00a99de007">printMemoryInfo</a> () const </td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_mesh.html#a2c3fbdfc9c2dad0350149a6089b7f063">initPoints</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af11939edcae7cbb2b4d53ecdfec9d36b"></a><!-- doxytag: member="Mesh::addEdge" ref="af11939edcae7cbb2b4d53ecdfec9d36b" args="(Vertex *v1, Vertex *v2)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (<a class="el" href="class_vertex.html">Vertex</a> *v1, <a class="el" href="class_vertex.html">Vertex</a> *v2)</td></tr>
<tr><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac54aeb14d596a9d60aecfac7deade8c2"></a><!-- doxytag: member="Mesh::VertexIterator" ref="ac54aeb14d596a9d60aecfac7deade8c2" args="" -->
class&#160;</td><td class="memItemRight" valign="bottom"><b>VertexIterator</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0465315dba883d93122873f15eb39c0d"></a><!-- doxytag: member="Mesh::FaceIterator" ref="a0465315dba883d93122873f15eb39c0d" args="" -->
class&#160;</td><td class="memItemRight" valign="bottom"><b>FaceIterator</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a265a85b438f4a316627f37c1c2d442e8"></a><!-- doxytag: member="Mesh::EdgeIterator" ref="a265a85b438f4a316627f37c1c2d442e8" args="" -->
class&#160;</td><td class="memItemRight" valign="bottom"><b>EdgeIterator</b></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Construct a subdivision surface from a </p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a191e57fc85691d1ce78af4ea21e2f740"></a><!-- doxytag: member="Mesh::addFace" ref="a191e57fc85691d1ce78af4ea21e2f740" args="(const QVector&lt; size_t &gt; &amp;vertexIndexList)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t Mesh::addFace </td>
          <td>(</td>
          <td class="paramtype">const QVector&lt; size_t &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexes</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add a triangle to the object. The triangle is formed by the vertices passed as arguments. The vertices are passed by means of their ID</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v1</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v2</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v3</td><td>id of the first vertex that form the triangle.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>triangle ID </dd></dl>

<p>Implements <a class="el" href="class_i_surface.html#a3a8c2686ce030b53fe40d9c5c1235046">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a6021ffd8934d9145ca1edd7df2414f52"></a><!-- doxytag: member="Mesh::addVertex" ref="a6021ffd8934d9145ca1edd7df2414f52" args="(const Point3 &amp;point)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Mesh::addVertex </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>point</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add point to object. The point added is in local coordinates ( i.e. relative to object's origin.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">point</td><td>point to add to the object. The point is in local coords.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ID of the new point. </dd></dl>

<p>Implements <a class="el" href="class_i_surface.html#a7e75193d5d130a68cff4cf99498ed23a">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a9f2bc7413f4e29d5868686a98842ea1c"></a><!-- doxytag: member="Mesh::addVertex" ref="a9f2bc7413f4e29d5868686a98842ea1c" args="(Vertex *v)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t Mesh::addVertex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_vertex.html">Vertex</a> *&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add vertex v to this object. The object will mantain the reference to the vertex. Do not delete the vertex while the object has a reference to it.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v</td><td>vertex to add to the object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the id of the vertex inside the object. </dd></dl>

<p>Implements <a class="el" href="class_i_surface.html#a251ae42a8041362cc406610abf0ce198">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ab56baecdf85f039cb0ad89f4925d26fe"></a><!-- doxytag: member="Mesh::boundingBox" ref="ab56baecdf85f039cb0ad89f4925d26fe" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a>&amp; Mesh::boundingBox </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the bounding box of the object. </p>

<p>Implements <a class="el" href="class_i_surface.html#a889365120e24bac514f1d437f3d13531">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="abad5264542d1984300759a171def98bb"></a><!-- doxytag: member="Mesh::color" ref="abad5264542d1984300759a171def98bb" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_color.html">Color</a> Mesh::color </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>color of the object. </dd></dl>

<p>Implements <a class="el" href="class_i_surface.html#a0553f349f4fe8b9e0752fe01e422df35">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ac2fcd123ddabd6134c86d95195b2581f"></a><!-- doxytag: member="Mesh::constFaceIterator" ref="ac2fcd123ddabd6134c86d95195b2581f" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; Mesh::constFaceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a const iterator over the faces that contained in this object. </p>

<p>Implements <a class="el" href="class_i_surface.html#a67a32caec0e8d348a10eecf6f7c2c3a4">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a63fb3c4a4b4ec01294a7568f65a9a156"></a><!-- doxytag: member="Mesh::face" ref="a63fb3c4a4b4ec01294a7568f65a9a156" args="(size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_face.html">Face</a>* Mesh::face </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the face at the position index. </p>

<p>Implements <a class="el" href="class_i_surface.html#a2bffda91521930b47acaec4990afed66">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ae256fa531699b096ebaaf220586b5bd7"></a><!-- doxytag: member="Mesh::faceIterator" ref="ae256fa531699b096ebaaf220586b5bd7" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; Mesh::faceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a face iterator to traverse over all the faces of this object. </p>

<p>Implements <a class="el" href="class_i_surface.html#a42b6325545e89a172a7d0585b9f03f2d">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ac6c7c275a9058e234321f5e9d961cbd4"></a><!-- doxytag: member="Mesh::hasChanged" ref="ac6c7c275a9058e234321f5e9d961cbd4" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Mesh::hasChanged </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Flag to check if the surface has been modified. </p>

<p>Implements <a class="el" href="class_i_surface.html#a6e0d4a5e3fcc3d79d02ed7924fb7faee">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a1611c39a7e793ba222e92eba9da6219e"></a><!-- doxytag: member="Mesh::iid" ref="a1611c39a7e793ba222e92eba9da6219e" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t Mesh::iid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Instance id of the surface </p>

<p>Implements <a class="el" href="class_i_surface.html#a419eea3eaca51c031d9b78265f48631e">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a2c3fbdfc9c2dad0350149a6089b7f063"></a><!-- doxytag: member="Mesh::initPoints" ref="a2c3fbdfc9c2dad0350149a6089b7f063" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::initPoints </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [protected, virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Initializes the points vector. </p>

</div>
</div>
<a class="anchor" id="a0e8b637313fdad092b8e4b4f1823f777"></a><!-- doxytag: member="Mesh::isSelected" ref="a0e8b637313fdad092b8e4b4f1823f777" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool Mesh::isSelected </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the selected state of the object.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object is selected, otherwise, false. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd>setSelected </dd></dl>

<p>Implements <a class="el" href="class_i_surface.html#a62c36e72a939cc47af4fb7f5a8e7129b">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="aa71ce7b007fd9b1eb2b1bea9d24a3aa7"></a><!-- doxytag: member="Mesh::numFaces" ref="aa71ce7b007fd9b1eb2b1bea9d24a3aa7" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t Mesh::numFaces </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the number of faces that the object has.</p>
<p>TODO: This may not belong here as is specific to mesh surfaces. </p>

<p>Implements <a class="el" href="class_i_surface.html#a0970ffe01db8cfacabf260231db43e79">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ad034013a938de18c6babdf16635247d7"></a><!-- doxytag: member="Mesh::numVertices" ref="ad034013a938de18c6babdf16635247d7" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t Mesh::numVertices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the number of vertices </p>

<p>Implements <a class="el" href="class_i_surface.html#ad6ddd94c54fd415bac6bf17d5db6fc0a">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a9ede5a0370854b4f05841f00a99de007"></a><!-- doxytag: member="Mesh::printMemoryInfo" ref="a9ede5a0370854b4f05841f00a99de007" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void Mesh::printMemoryInfo </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Debugging function used to print the memory usage of this object. </p>

</div>
</div>
<a class="anchor" id="a5f4de604734ffe7d72bbab673290eed7"></a><!-- doxytag: member="Mesh::removeFace" ref="a5f4de604734ffe7d72bbab673290eed7" args="(size_t id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::removeFace </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove the triangle from the object. The points or vertices that compound the triangle are not removed from the object. The points could be rendered acording to the drawing mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>triangle ID to remove. </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="class_i_surface.html#a61483ac0eed9ce967f24c330aaa4321c">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a8be34a7681ec6570e52611d7298a99e4"></a><!-- doxytag: member="Mesh::removeVertex" ref="a8be34a7681ec6570e52611d7298a99e4" args="(size_t id)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::removeVertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove a point from the object. If the point form part of a triangle then that triangle should be removed from the object.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>ID of the point to delete. </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="class_i_surface.html#a403cf8cca0dfcc43965a000405ce5e0c">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="ab8cfba4c9da4c35920c5f63090885477"></a><!-- doxytag: member="Mesh::replaceFace" ref="ab8cfba4c9da4c35920c5f63090885477" args="(size_t index, const QVector&lt; size_t &gt; &amp;vertexIndexList)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::replaceFace </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVector&lt; size_t &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexList</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Replace a triangle with new indices to existing points. </p>

<p>Implements <a class="el" href="class_i_surface.html#a725c3b6e08bae17a345d6ac428cb862a">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="affb964be4b82dd642346231cad8f4696"></a><!-- doxytag: member="Mesh::setChanged" ref="affb964be4b82dd642346231cad8f4696" args="(bool val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::setChanged </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets a flag to mark the surface as modified. </p>

<p>Implements <a class="el" href="class_i_surface.html#af76ece8998133ea0151f1d899ab09235">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a7be45b0d141ec1c83c6a554a454c68f0"></a><!-- doxytag: member="Mesh::setColor" ref="a7be45b0d141ec1c83c6a554a454c68f0" args="(const Color &amp;color)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::setColor </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_color.html">Color</a> &amp;&#160;</td>
          <td class="paramname"><em>color</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">color</td><td>color of the object. </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="class_i_surface.html#af199f348a53404b2a9afe4d53320967d">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a5be77a24074569778cd8cbe47138c013"></a><!-- doxytag: member="Mesh::setSelected" ref="a5be77a24074569778cd8cbe47138c013" args="(bool val)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void Mesh::setSelected </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Mark the object as selected. This property is used by the renderers to mark selected objects (for example draw a bounding box around the object)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">val</td><td>pass true to set the object as selected </td></tr>
  </table>
  </dd>
</dl>

<p>Implements <a class="el" href="class_i_surface.html#a308ae3492b08adf81eb71603cc9c9e77">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a163d154511483e51213b617a1f1dd0bd"></a><!-- doxytag: member="Mesh::vertex" ref="a163d154511483e51213b617a1f1dd0bd" args="(size_t index)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_vertex.html">Vertex</a>* Mesh::vertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implements <a class="el" href="class_i_surface.html#a5776c72d4f1c81b18e2d54d3b0becdb7">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a2c98b49e6c06ea3f4f12edce4b72b791"></a><!-- doxytag: member="Mesh::vertex" ref="a2c98b49e6c06ea3f4f12edce4b72b791" args="(size_t index) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="class_vertex.html">Vertex</a>* Mesh::vertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td> const<code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implements <a class="el" href="class_i_surface.html#ae72da7c2999fdcd7ae93832c6ed419f7">ISurface</a>.</p>

</div>
</div>
<a class="anchor" id="a1a3da9a1014758926c9af5f557d97e5d"></a><!-- doxytag: member="Mesh::vertexIterator" ref="a1a3da9a1014758926c9af5f557d97e5d" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_vertex.html">Vertex</a>&gt; Mesh::vertexIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a vertex iterator to traverse over all the vertices in this object. </p>

<p>Implements <a class="el" href="class_i_surface.html#a852184671d98db33f9160b40f5aa5e76">ISurface</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>engine/include/subdivision/<a class="el" href="_subdivision_8h_source.html">Subdivision.h</a></li>
<li>engine/include/<a class="el" href="_mesh_8h_source.html">Mesh.h</a></li>
<li>engine/src/Mesh.cpp</li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Thu May 31 2012 16:19:52 for QSculpt by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
